# 任务详情
# 一只雪糕5元钱，顾客排队买雪糕，每位顾客只买一只雪糕，然后向你付5元、10元或20元。你必须给每个顾客正确找零。

# 如果你能给每位顾客正确找零，返回 True ，否则返回 False 

# 任务要求
# 1. 请将代码区的函数补充完整

# 2. 注意，一开始你手头没有任何零钱

# 3. 假设钞票只有5元，10元和20元

# 4. 返回数据类型为bool

# 测试用例
# 示例1

# 输入：[5, 5, 5, 10, 20]

# 输出：True

# 解释：

# 前 3 位顾客那里，我们按顺序收取 3 张 5 元

# 第 4 位顾客那里，我们收取一张 10元的钞票，并返还 5元

# 第 5 位顾客那里，我们找还一张 10 元的钞票和一张 5 元的钞票

# 由于所有客户都得到了正确的找零，输出 True


# 示例2

# 输入：[10, 10]

# 输出：False

# 解释： 

# 前1位顾客那里，没法找零，输出 False
# 
# # 1.运行或提交代码不需要自己编写测试用例，后台自动进行测试检查。
# 2.您编写代码的区域可以不限定在类或者函数体内，保证输入与输出符合任务要求即可。
# 3.点击“运行代码”按钮，可以查看程序设计是否正确，运行次数越多，任务得分越低。
# 4.点击“提交代码”按钮，系统将保存代码，并记录任务数据。
# 5.点击右上方“结束任务”按钮，系统将在后台计算任务得分，任务结束。
# -*- coding: utf-8 -*- 
class Solution:
    def giveChange(self, bills: list) -> bool:
        # 从此处开始编写代码
        five = 0
        ten = 0
        for x in bills:
            if x == 5:
                five += 1
            elif x == 10:
                if five:
                    five -= 1
                    ten += 1
                else:
                    return False
            else:
                if ten and five:
                    ten -= 1
                    five -= 1
                elif five >= 3:
                    five -= 3
                else:
                    return False
        return True

        pass
        # 代码编写结束
        # 


test1 = [5, 5, 5, 10, 20]
test2 = [10, 10]
print(Solution.giveChange(Solution, test1))
